       # Creation de la fonction de scan
def fnScanportsParIP(scanports_ip_debut_liste, scanports_ip_fin_liste, pos, chaine_adrip) :
                                    """ Fonction permettant de tester les ports pour chaque adresse IP d'une plage donnee en parametre """
                                   
	for octet in range(int(scanports_ip_debut_liste[pos]), int(scanports_ip_fin_liste[pos])+1) :
        	if pos < 3 :
                                            # On construit l'adresse IP avec les autres octets
                	fnScanportsParIP(scanports_ip_debut_liste, scanports_ip_fin_liste, pos+1, chaine_adrip+str(octet)+".")
                else :
                	scanports_hote = chaine_adrip + str(octet)
                	scanports_port = 0
                	resultat = 1
                                            # On teste les ports
                try :
                	for scanports_port in range(1, 1025) :
                                                    # On tente d'acceder à l'adresse IP par un port
                        	connexion_scanports = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
                               	resultat = connexion_scanports.connect_ex((scanports_hote, scanports_port))
                                                   
                                if resultat == 0 : # On obtient une reponse
                                                        #print("IP: {}   Port: {}".format(scanports_hote, scanports_port))
                                                       
                                                        # Reception du tag client "pret a recevoir"
                                tag_reception = self.connexion.recv(1024)
                                	if tag_reception == b"tagMENUSUPERVISIONSCANPRET" :
                                                            # Envoi du resultat au client
                                        	resultat_scan = scanports_hote + " " + str(scanports_port)
                                                self.connexion.send(resultat_scan.encode())
                                          else :
                                          	print("Erreur :", tag_reception.decode())
                                                           
                                                connexion_scanports.close()
                                                   
                                if resultat == 10060 : # L'adresse IP n'est pas joignable
                                                print("IP: "+scanports_hote+"   introuvable")
                                                break
                                except :
                                	print("Erreur lors du scan de ports.")
                                               
                                                       
                                # On appelle la fonction qui se charge du scan de port
                        fnScanportsParIP(scanports_ip_debut_liste, scanports_ip_fin_liste, 0, "")

